/**
 * 
 */
package es.ats.codington.festival.interfaces.daos;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;

import es.ats.codington.festival.domain.Event;
import es.ats.codington.festival.domain.Visitor;
import es.ats.codington.festival.exceptions.DAOException;

/**
 * @author Codington_RED
 *
 */
public interface IEventDAO {
	
	/**
	 * DAO interface for showAllEvents method.
	 * @return events
	 * @throws DAOException
	 */
	public List<Event> showAllEvents() throws DAOException;
	
	/**
	 * DAO interface for showEvents method.
	 * @param eventname
	 * @return events
	 * @throws DAOException
	 */
	public List<Event> showEvents(Event eventname) throws DAOException;
	
	/**
	 * DAO interface for getEvent method.
	 * @param eventId
	 * @return event
	 * @throws DAOException
	 */
	public Event getEvent(int eventId) throws DAOException;

	/**
	 * DAO interface for updateEvent method.
	 * @param updateEvent
	 * @return affectedRows
	 * @throws DAOException
	 */
	public int updateEvent(Event updateEvent) throws DAOException;

	/**
	 * DAO interface for insertEvent method.
	 * @param insertEvent
	 * @return insertEv
	 * @throws DAOException
	 */
	public boolean insertEvent(Event insertEvent) throws DAOException;
	
	/**
	 * DAO interface for updateSeatsEventInc method.
	 * @param event
	 * @return affectedRows
	 * @throws DAOException
	 */
	public int updateSeatsEventInc(Event event) throws DAOException;
	
	/**
	 * DAO interface for updateSeatsEventDec method.
	 * @param event
	 * @return affectedRows
	 * @throws DAOException
	 */
	public int updateSeatsEventDec(Event event) throws DAOException;

	/**
	 * DAO interface for getEvent method.
	 * @param resultSet
	 * @return affectedRows
	 * @throws SQLException
	 */
	public Event getEvent(ResultSet resultSet) throws SQLException;
	
	/**
	 * DAO interface for getCheckEvent method.
	 * @param event 
	 * @return event
	 * @throws DAOException
	 * @throws SQLException
	 */
	public boolean getCheckEvent(Event event) throws DAOException, SQLException;

	/**
	 * DAO interface for getIdEvent method.
	 * @param event
	 * @return  id
	 * @throws DAOException
	 * @throws SQLException
	 */
	public int getIdEvent(Event event) throws DAOException, SQLException;

}
